package com.vincent.exam.linkedList;


/**
 * 反转链表
 * 遍历一次链表，每次将head重新置为next
 * 然后将head的下一个节点从next指向为pre，即反转了
 * 然后刷新前置节点pre为当前节点
 * 当前节点刷新为下一个节点
 * 直到链表遍历结束
 */
public class ReverseList {
    private ListNode reverse(ListNode head){
        if (head == null) {
            return null;
        }
        ListNode pre = null;
        ListNode next = null;
        while (head != null) {
            // 保存next
            next = head.next;
            // 设置当前节点的下一节点next修改成前一个节点pre，进行反转
            head.next = pre;
            // pre设置为head
            pre = head;
            // 将head设置为next，继续遍历
            head = next;
        }
        return pre;
    }
}
